package com.example.demo.passwordEncoder;

import org.springframework.security.crypto.password.PasswordEncoder;

/**
 * 凭证匹配器
 * 专门用于做认证流程的凭证校验使用的类型
 * 它有两大核心方法
 * 1、encode  --> 把明文密码，加密程密文密码
 * 2、matches --> 校验明文和密文是否匹配
 */
public class SimplePasswordEncoder implements PasswordEncoder {
    
    /**
     *  加密逻辑
     * @param rawPassword 明文字符串，就是页面收集的源密码
     * @author 陈先生
     * @date 2021/4/2 11:33
     * @return java.lang.String
     * @throws 
     */
    @Override
    public String encode(CharSequence rawPassword) {
        System.out.println("SimplePasswordEncoder--加密逻辑执行");
        return new String(rawPassword.toString()) ;
    }

    /**
     *
     * @param rawPassword  明文密码，页面收集的密码
     * @param encodedPassword 密文密码，数据源中的密码
     * @author 陈先生
     * @date 2021/4/2 11:35
     * @return boolean
     * @throws
     */
    @Override
    public boolean matches(CharSequence rawPassword, String encodedPassword) {
        System.out.println("SimplePasswordEncoder--密码匹配逻辑执行");
        return encodedPassword.equals(encode(rawPassword));
    }
}
